//#ifdef H5
const jweixin = require('@/utils/jweixin-module')
//#endif
import {getH5Config} from '@/api/https'
import globalData from '@/globalData'
// 公众号开发配置
export function initH5Config(jsApiList=['scanQRCode']) {
  return new Promise(async (resolve, reject) => {
    // 接口获取对应的配置信息
      const _param = {
        url: encodeURIComponent(location.href.split('#')[0]),
        sellerNo: globalData.sellerNo,
        type: 2
    }
    const {data,code} = await getH5Config(_param)
    if(code === 0) {
      jweixin.config({
        debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
        appId: data.appId, // 必填，公众号的唯一标识
        timestamp: data.timestamp, // 必填，生成签名的时间戳
        nonceStr: data.nonceStr, // 必填，生成签名的随机串
        signature: data.signature, // 必填，签名
        jsApiList// 必填，需要使用的JS接口列表

      })
      jweixin.ready(function(){
        resolve(jweixin)
        // config信息验证后会执行 ready 方法，所有接口调用都必须在 config 接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在 ready 函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在 ready 函数中。
      });
      jweixin.error(function(res){
        reject(res)
        // config信息验证失败会执行 error 函数，如签名过期导致验证失败，具体错误信息可以打开 config 的debug模式查看，也可以在返回的 res 参数中查看，对于 SPA 可以在这里更新签名。
      });
    } else {
      reject('getConfig接口异常')
    }
    
  })
  

}

// 查看当前是不是微信浏览器
export function isWeiXin () {
  let userAgent = navigator.userAgent.toLowerCase()
  // 通过正则表达式匹配ua中是否含有MicroMessenger字符串
  if (userAgent.indexOf('micromessenger') !== -1) {
    return true
  } else {
    return false
  }
}

/**
 * 成都公交-H5拉起小程序支付
 * @param {*} payData 支付信息
 * @param {*} callbackUrl 支付完成后返回的H5成功页地址
 */
export const toCDGJWechatMiniPay = (payData, callbackUrl) => {
  //#ifdef H5
  const getpar = {
    timeStamp: payData.timeStamp || payData.timestamp,
    nonceStr: payData.nonceStr || payData.noncestr,
    package: payData.package || payData.packageStr,
    sign: payData.sign,
    paySign: payData.paySign || payData.sign,
    signType: payData.signType || 'MD5'
  };
  getpar.timeStamp = getpar.timeStamp.toString();
  const paymentString = encodeURIComponent(JSON.stringify(getpar));
  console.log("🚀 ~ toCDGJWechatMiniPay ~ getpar:", getpar)
  console.log("🚀 ~ toCDGJWechatMiniPay ~ callbackUrl:", callbackUrl)
  wx.miniProgram.redirectTo({
    url: `/pages_common/pages/otherPay/wechatPay?paymentString=${paymentString}&callbackUrl=${callbackUrl}`
  });
  //#endif
}

/**
 * 成都公交-H5内嵌APP H5微信支付
 * @param {*} payData 支付信息
 * @param {*} callbackUrl 支付完成后返回的H5成功页地址
 */
export const toCDGJH5UrlPay = (payData, callbackUrl) => {
  //#ifdef H5
  console.log("🚀 ~ toCDGJH5UrlPay ~ payData:", payData)
  console.log("🚀 ~ toCDGJH5UrlPay ~ callbackUrl:", callbackUrl)
  const { mwebUrl } = payData
  const payUrl = `${mwebUrl}&redirect_url=${callbackUrl}`
  console.log("🚀 ~ toCDGJH5UrlPay ~ payUrl:", payUrl)

  let form = document.createElement('form');
  document.body.appendChild(form);
  form.method = 'post';
  form.action = payUrl;
  form.submit();
  document.body.removeChild(form);
  //#endif
}

/**
 * 成都公交-H5内嵌APP H5网页
 * @param {*} path 网页路径
 */
export const toCDGJWebView = (path) => {
  //#ifdef H5
  let h5Path = path || window.location.href // 默认回到当前页
  wx.miniProgram.redirectTo({
    url: `/pages_common/pages/otherPay/webview?code=${encodeURIComponent(h5Path)}&source=mp`
  });
  //#endif
}

/**
 * 成都公交-H5内嵌小程序-打开当前位置
 * @param {*} params lat & lng & address 必填
 */
export const toCDGJWechatMiniLocation = (params, path) => {
  //#ifdef H5
  console.log("🚀 ~ toCDGJWechatMiniLocation ~ params:", params)
  let h5Path = path || window.location.href // 默认回到当前页
  wx.miniProgram.navigateTo({
    url: `/pages_common/pages/otherPay/location?type=location&lat=${params.lat}&lng=${params.lng}&address=${params.address}&callbackUrl=${encodeURIComponent(h5Path)}`
  });
  //#endif
}